Circular buffers are well known in the art. An example of a ten-cell circular buffer 10 (i.e., an N-cell circular buffer, where N is equal to 10) is shown in FIG. 1. Circular buffer 10 has ten circular buffer cells (CBC.sub.x, for x=0 through 9). Circular buffers such as circular buffer 10 are typically accessed sequentially. For example, CBC.sub.9 is accessed after CBC.sub.8. After the last circular buffer cell is accessed, a "wrap-around" occurs such that the next circular buffer cell to be accessed is the first circular buffer cell. That is, referring to circular buffer 10, CBC.sub.0 is accessed after CBC.sub.9 is accessed. Thus, for a circular buffer cell of arbitrary length N, each circular buffer cell, CBC.sub.x is accessed after CBC.sub.((x-1)+N) REM N, where "REM" is a function that yields, in a division operation, the number that is the undivided part of the dividend (i.e., the remainder).
Circular buffers are of particular utility in data communications devices. For example, in a data receiver, received data would typically be inserted sequentially into a circular buffer. Once data is inserted into a particular cell of the circular buffer, this cell becomes unavailable for access until the received data is processed. At that point, this cell again becomes available for access.
The circular buffer 10, of FIG. 1, has a ten-cell availability status circuit 20, associated with it. Each status cell of ten-cell availability status circuit 20 (CAS.sub.x, for x=0 through 9) corresponds to one of the circular buffer cells (CBC.sub.x, for x=0 through 9, respectively). The state of a particular status cell, CAS.sub.x, of the availability status circuit 20 indicates whether the corresponding circular buffer cell, CBC.sub.x, is available for access.
As shown in FIG. 1, the states of the status cells, CAS.sub.x, of the cell availability status circuit 20 are determined by CAS determination logic 30. The CAS determination logic 30 responds to an available address indicator signal, AV.sub.-- ADD, that indicates which of the circular buffer cells is the first circular buffer cell available for access; and to an unavailable address indicator signal, UNAV.sub.-- ADD, that indicates which of the circular buffer cells is the first circular buffer cell unavailable for access. For example, if AV.sub.-- ADD indicates that CBC.sub.2 is the first circular buffer cell available for access, and if UNAV.sub.-- ADD indicates that CBC.sub.5 is the first circular buffer cell unavailable for access, then CAS determination logic 30 sets cell availability status circuits CAS.sub.2, CAS.sub.3, and CAS.sub.4 to indicate that corresponding circular buffer cells CBC.sub.2, CBC.sub.3, and CBC.sub.4 are available for access. Likewise, CAS determination logic 30 sets cell availability status circuits CAS.sub.0, CAS.sub.1, CAS.sub.5, CAS.sub.6, CAS.sub.7, CAS.sub.8, and CAS.sub.9 to indicate that corresponding circular buffer cells CBC.sub.0, CBC.sub.1, CBC.sub.5, CBC.sub.6, CBC.sub.7, CBC.sub.8, and CBC.sub.9 are not available for access.
Conventional CAS determination logic circuits employ arithmetic circuitry to determine how to set the availability status circuits. However, such arithmetic circuitry is complicated. In particular, since circular buffers "wrap-around", the arithmetic circuitry of conventional CAS determination logic circuits must perform complicated modular arithmetic.
Therefore, what is desired is an availability status indicator circuit with CAS determination logic circuitry that can determine, without complex arithmetic circuitry or high-overhead masking logic, how to set availability status circuits.